#ifndef TEST1_H_
#define TEST1_H_

#endif /*TEST1_H_*/

#include <iostream>

using namespace std;


template<class elemenType> class ListItem;

template<class elemType> class List {
public:
	List<elemType>() :
		_at_front(0), _at_end(0), _current(0), _size(0) {
	}
	List<elemType>(const List<elemType>&);
	List<elemType>& operator=(const List<elemType>&);
	~List();

	void insert(ListItem<elemType>* ptr, elemType value);
	int remove(elemType value);

	ListItem<elemType>* find(elemType value);

	void display(ostream& os = cout);
	int size() {
		return _size;
	}
	
private:
	ListItem <elemType>* _at_front;
	ListItem <elemType>* _at_end;
	ListItem <elemType>* _current;
	int _size;
};